map に対する操作はスレッドセーフではない
map に対する操作はスレッドセーフではない
RWMutex を使ってロックをとる
RLock(読取) 同士は競合しない
code:map.go
package main
import "sync"
type KeyValue struct {
mu sync.RWMutex
}
func NewKeyValue() *KeyValue {
return &KeyValue{
}
}
func (kv *KeyValue) Set(key, val string) {
kv.mu.Lock()
defer kv.mu.Unlock()
}
func (kv *KeyValue) Get(key string) (string, bool) {
kv.mu.RLock()
defer kv.mu.RUnlock()
return val, ok
}